using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using XLua;

public class LuaManager : MonoBehaviour
{
    private LuaEnv luaEnv; // Lua 环境实例

    protected void Start()
    {
        luaEnv = new LuaEnv();

        //添加自定义加载器
        luaEnv.AddLoader(MyCustomLoader);
        // 关键代码：使用 require 加载
        //luaEnv.DoString("require 'LuaTest/Lua/text'");
        luaEnv.DoString("require 'Main'");

        // 现在你可以调用这个 Lua 脚本中定义的函数或访问全局变量了
        // 例如，如果 text.lua.txt 里有一个函数叫 MyFunction()
        // luaEnv.DoString("MyFunction()");
    }

    private byte[] MyCustomLoader(ref string filepath)
    {
        //根据文件名，自定义加载路径，我这里是Asset文件夹下新建了一个Lua文件夹
        string path = Application.dataPath + "/Resources/LuaTest/Lua/" + filepath + ".lua.txt";
        //这里判断一下文件是否存在	File需要引用System.IO命名空间
        if (File.Exists(path))
        {
            //如果存在，将文件读取出来并返回出去
            return File.ReadAllBytes(path);
        }
        //如果不存在就返回空
        return null;
    }

    protected void OnDestroy()
    {
        //清除Lua中没有手动释放的对象 进行垃圾回收
        //帧更新中定时执行 或者 切场景时执行
        luaEnv.Tick();
        //销毁Lua解析器
        luaEnv.Dispose();
    }


}
